﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlexFlow.Model
{
    /// <summary>
    /// 表示活动实例状态枚举
    /// </summary>
    public enum ActivityInstanceState
    {
        /// <summary>
        /// 过程实例中的活动已经被创建，但是还没有激活
        /// （例如，活动的进入条件没有满足），
        /// 并且没有任务需要处理。
        /// </summary>
        Inactive,
        /// <summary>
        /// 该活动有未完成的任务
        /// </summary>
        Active,
        /// <summary>
        /// 活动实例被静止，并直到活动返回到Inactive状态，才能为其分配任务。
        /// </summary>
        Suspended,
        /// <summary>
        /// 活动实例执行完成。
        /// </summary>
        Completed
    }
    /// <summary>
    /// 表示活动实例
    /// </summary>
    public class ActivityInstance : PhysicalModel
    {
        /// <summary>
        /// 表示该活动实例绑定的过程实例ID
        /// </summary>
        public Guid ProcessInstanceId { get; set; }
        /// <summary>
        /// 表示该活动实例使用的活动ID
        /// </summary>
        public Guid ActivetyId { get; set; }
        /// <summary>
        /// 表示该活动实例的状态
        /// </summary>
        public ActivityInstanceState State { get; set; }
        /// <summary>
        /// 表示进入活动时使用的数据
        /// </summary>
        public KeyValuePair<Guid, Object>[] EnterData { get; set; }
        /// <summary>
        /// 表示活动实例的执行数据
        /// </summary>
        public Dictionary<string, string> ExecuteData { get; set; }
    }
}
